<?php  
function x_real_ip() {
    $ip=$_SERVER['REMOTE_ADDR'];
    if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match_all('#\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}#s',$_SERVER['HTTP_X_FORWARDED_FOR'],$matches)) {
        foreach($matches[0] as $xip) {
            if (!preg_match('#^(10|172\\.16|192\\.168)\\.#',$xip)) {
                $ip=$xip;
            } else {
                continue;
            }
        }
    } else {
        if (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}\\.){3}[0-9]{1,3}$/',$_SERVER['HTTP_CLIENT_IP'])) {
            $ip=$_SERVER['HTTP_CLIENT_IP'];
        } else {
            if (isset($_SERVER['HTTP_CF_CONNECTING_IP']) && preg_match('/^([0-9]{1,3}\\.){3}[0-9]{1,3}$/',$_SERVER['HTTP_CF_CONNECTING_IP'])) {
                $ip=$_SERVER['HTTP_CF_CONNECTING_IP'];
            } else {
                if ((isset($_SERVER['HTTP_X_REAL_IP']) && preg_match('/^([0-9]{1,3}\\.){3}[0-9]{1,3}$/',$_SERVER['HTTP_X_REAL_IP']))) {
                    $ip=$_SERVER['HTTP_X_REAL_IP'];
                }
            }
        }
    }
    return $ip;
}
/**
 * 加密函数
 * @param string $string 需要加密的字串
 * @param string $operation 操作类型,E:加密,D:解密
 * @param string $key 加密密钥
 * @return string
 */
function encrypt($string,$operation,$key=''){  
    $key=md5($key);  
    $key_length=strlen($key);  
      $string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string;  
    $string_length=strlen($string);  
    $rndkey=$box=array();  
    $result='';  
    for($i=0;$i<=255;$i++){  
           $rndkey[$i]=ord($key[$i%$key_length]);  
        $box[$i]=$i;  
    }  
    for($j=$i=0;$i<256;$i++){  
        $j=($j+$box[$i]+$rndkey[$i])%256;  
        $tmp=$box[$i];  
        $box[$i]=$box[$j];  
        $box[$j]=$tmp;  
    }  
    for($a=$j=$i=0;$i<$string_length;$i++){  
        $a=($a+1)%256;  
        $j=($j+$box[$a])%256;  
        $tmp=$box[$a];  
        $box[$a]=$box[$j];  
        $box[$j]=$tmp;  
        $result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256]));  
    }  
    if($operation=='D'){  
        if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8)){  
            return substr($result,8);  
        }else{  
            return'';  
        }  
    }else{  
        return str_replace('=','',base64_encode($result));  
    }  
}  
?>